﻿//46. 全排列
//给定一个不含重复数字的数组 nums ，返回其 所有可能的全排列 。你可以 按任意顺序 返回答案

class Solution {
public:
    vector<vector<int>>  ans;
    vector<int> t;
    void bfs(vector<int>& nums, int cur, vector<int>& arr)
    {
        int n = nums.size();
        if (cur == n)
        {
            ans.push_back(t);
        }
        for (int i = 0; i < n; i++)
        {
            if (arr[i])
            {
                arr[i] = 0;
                t.push_back(nums[i]);
                bfs(nums, cur + 1, arr);
                t.pop_back();
                arr[i] = 1;
            }
        }
    }

    vector<vector<int>> permute(vector<int>& nums)
    {
        int n = nums.size();
        vector<int> arr(n, 1);
        bfs(nums, 0, arr);
        return ans;
    }
};